package com.kaifamiao.arrays;

public class Space {
    public static void main(String[] args) {
        // 隐式创建数组实例并用数组常量完成初始化
        // 1、隐式创建数组实例并赋予默认值 (在堆内存中开辟一块连续的内存空间)
        // 2、用数组常量中的值依次初始化数组中各个元素
        // 3、将堆内存中数组实例的首地址赋值给等号之前的变量
        int[] arr = { 1, 2, 3 };

        // 显式创建数组实例
        // 1、创建数组实例并赋予默认值 (在堆内存中开辟一块连续的内存空间)
        // 2、将堆内存中数组实例的首地址赋值给等号之前的变量
        char[] chars = new char[5];

        // 动态初始化
        for (int i = 0; i < chars.length; i++) {
            int rand = (int)(Math.random() * 26) + 'a';
            chars[i] = (char)rand;
        }

        // 遍历数组
        for (int i = 0; i < chars.length; i++) {
            System.out.printf( "%c\t", chars[i] );
        }
        System.out.println();

        System.out.println( "- ".repeat( 15 ) );

        // 显式创建数组
        // 1、创建数组实例并赋予默认值 (在堆内存中开辟一块连续的内存空间)
        // 2、将堆内存中数组实例的首地址赋值给等号之前的变量
        int[][] x = new int[4][];
        for (int i = 0; i < x.length; i++) {
            System.out.println( x[i] );
        }

        x[0] = new int[4];
        x[1] = new int[]{ 2, 4, 6, 8 };
        x[2] = new int[]{ 1, 3, 5, 7, 9};
        // x[3] = new int[3];

        for (int i = 0; i < x.length; i++) {
            System.out.println( x[i] );
        }

        for ( int i = 0 ; i < x.length ; i++ ) {
            int[] a = x[i];
            if( a != null ) {
                for (int j = 0; j < a.length; j++) {
                    System.out.print(a[j] + "\t");
                }
            }
            System.out.println();
        }

    }
}
